home *** CD-ROM | disk | FTP | other *** search
- global gWorld, gStates, gOBJECTS, gCursorPresent, gHotRects, gScreenState, gCursorList, gTimerList, gHitMaps, gPuppetlines, gKeyRef, cNullCast, cNullQTmovie, NULLRECT, gSpritePropTypes, gQTproplist, cNUllCharmovie, sPICTSPRITE, sQTSPRITE, sCURSORSPRITE, sCPSprite, sQTCharSprite, gUnvObjects, gAngles, gLastCursor, gPlayingQT, gScreenWidth, gScreenHeight, gCurKeyList, DFLTTEMPO, gTransMovieName, gAnimationObjects, gDeathRow, gLastKeyList, gKeyFrameSound, gEnvironmentSound, gKeyFrameSoundMode, gHaveNavs, gNextEnvLetter, gNextDIRFile, gNextKeyLocFile, gMIDIPlayTRUE, gInitalized, xNAVXOBJ, xCURXOBJ, gCPU, gfileSep, gRootPath, gHDpath, gXobjs, gXOBJPath, gCDpath, gCDName, gQTmovPath, gSoundPath, gNoPreLoadRefNames
-
- on SetPathsforEnviro letter
- set gQTmovPath to gCDName & "DATA" & gfileSep & letter & "_enviro" & gfileSep & letter & "_Char" & gfileSep
- set gSoundPath to gCDName & "DATA" & gfileSep & letter & "_enviro" & gfileSep & letter & "_sfx" & gfileSep
- end
-
- on GIVEPDA
- ReleaseUNVobject(#PDAObj)
- PDARelease(#DOCSeries)
- PDARelease(#ProsProSeries)
- end
-
- on PrepareEnter
- set gPlayingQT to 0
- delScreenState()
- genEnterKF()
- end
-
- on PrepareEnterPDA
- set letter to getaProp(gStates, #EnviroLetter)
- SetPathsforEnviro(letter)
- PaletteSwitch("Palette" && letter)
- ADDUnvOBJECTS()
- PrepareEnter()
- go("Mainloop")
- end
-
- on JumpToMainLoop
- set letter to getaProp(gStates, #EnviroLetter)
- SetPathsforEnviro(letter)
- PaletteSwitch("Palette" && letter)
- ADDUnvOBJECTS()
- PrepareEnter()
- go("Mainloop")
- end
-
- on TransMoviePaletteSwitch
- PaletteSwitch("Palette" && char 1 of string(getaProp(gLastKeyList, #RefName)))
- go(the frame + 1)
- PaletteSwitch("newest unipal")
- go(the frame + 1)
- PaletteSwitch("Palette" && char 1 of string(getaProp(gCurKeyList, #RefName)))
- go(the frame + 1)
- end
-
- on transQTLoop
- if the movieRate of sprite sQTSPRITE then
- go(the frame)
- else
- if gNextDIRFile = #empty then
- go("KeyFrame")
- setSoundState(#play)
- end if
- end if
- end
-
- on transQTPrep
- set the movieRate of sprite sQTSPRITE to 1
- end
-
- on AddtoBeenThere KeyRef
- if voidp(getaProp(getaProp(gStates, #BeenThere), KeyRef)) then
- setaProp(getaProp(gStates, #BeenThere), KeyRef, 1)
- else
- setaProp(getaProp(gStates, #BeenThere), KeyRef, getaProp(getaProp(gStates, #BeenThere), KeyRef) + 1)
- end if
- end
-
- on AddClicktoTrail click
- if voidp(getaProp(gStates, #Trail)) then
- setaProp(gStates, #Trail, [:])
- end if
- end
-
- on MakeMovieFileJump
- unLoadCast()
- go(gNextKeyLocFile, gNextDIRFile)
- end
-
- on JumpLocLookup NextKeyRef
- set LocTable to [#A20, #B01, #B08A, #B08B, #C01, #D01, #E01, #E06F, #E06G, #E06H, #F01, #G03, #G06, #G22, #H01]
- set Jumpto to getOne(LocTable, NextKeyRef)
- if Jumpto = 0 then
- return "EntryPoint"
- else
- return string(NextKeyRef & "Jump")
- end if
- end
-
- on JumpToMovie MovNum
- if char 1 of string(getaProp(gCurKeyList, #RefName)) <> string(MovNum) then
- set NextKeyRef to getaProp(getaProp(gStates, #EnviroLOC), MovNum)
- genExitKF(NextKeyRef, #Jump, #PDA)
- end if
- end
-
- on CheckInterFileJump LastKeyRef, NextKeyRef
- if (NextKeyRef = #trans) or (NextKeyRef = #A00) then
- return #empty
- end if
- set NextJumpLetter to char 1 of string(NextKeyRef)
- if getaProp(gStates, #EnviroLetter) <> NextJumpLetter then
- set gNextKeyLocFile to JumpLocLookup(NextKeyRef)
- return NextJumpLetter
- else
- return #empty
- end if
- end
-
- on CancelTrans
- if the shiftDown then
- set the movieRate of sprite sQTSPRITE to 0
- if gNextDIRFile <> #empty then
- MakeMovieFileJump()
- else
- go("KeyFrame")
- setSoundState(#play)
- end if
- end if
- end
-
- on JumpToKey NextKeyRef
- genExitKF(NextKeyRef, #Jump)
- end
-
- on genExitKF NextKeyRef, DoTrans, SpecialSituation
- set the movieRate of sprite sQTCharSprite to 0
- set the loc of sprite sQTCharSprite to point(-9999, -9999)
- set func to getaProp(getaProp(gCurKeyList, #FUNCTIONS), #exit)
- if func <> #NOEXIT then
- do(string(func))
- end if
- set NextKeyRef to setKFGlobals(NextKeyRef)
- set LastKeyRef to getaProp(gLastKeyList, #RefName)
- set gNextDIRFile to CheckInterFileJump(LastKeyRef, NextKeyRef)
- stopNonAmbientSounds()
- if (DoTrans = #Jump) or the shiftDown then
- if gNextDIRFile = #empty then
- go("KeyFrame")
- else
- set gTimerList to [:]
- if SpecialSituation = #PDA then
- set gNextKeyLocFile to "PDAJump"
- CleanUpPDAJump()
- end if
- MakeMovieFileJump()
- end if
- else
- DoTransition(LastKeyRef, NextKeyRef)
- go("TransQT")
- end if
- end
-
- on DoTransition LastKeyRef, NextKeyRef
- SetTransMovie(LastKeyRef, NextKeyRef)
- PlayTranstoKF(LastKeyRef, NextKeyRef)
- end
-
- on setKFGlobals KeyRef
- if stringp(KeyRef) then
- set KeyRef to value(KeyRef)
- end if
- set gLastKeyList to getaProp(gWorld, gKeyRef)
- if symbolp(KeyRef) then
- set gCurKeyList to getaProp(gWorld, KeyRef)
- set gKeyRef to KeyRef
- end if
- return gKeyRef
- end
-
- on SetTransMovie LastKeyRef, NextKeyRef
- if (length(string(LastKeyRef)) > 3) and (length(string(NextKeyRef)) > 3) then
- set gTransMovieName to string(LastKeyRef & NextKeyRef & ".MOV")
- else
- set gTransMovieName to string(LastKeyRef & "_" & NextKeyRef & ".MOV")
- end if
- set cnum to the number of cast gTransMovieName
- if cnum = -1 then
- set cnum to cNullQTmovie
- else
- if the sound of cast gTransMovieName then
- setSoundState(#pause)
- end if
- end if
- set the castNum of sprite sQTSPRITE to cnum
- end
-
- on PlayTranstoKF
- set gPlayingQT to 1
- onOffScreenCursor(0)
- set the movieTime of sprite sQTSPRITE to 0
- set the rect of sprite sQTSPRITE to rect(0, 0, 560, 336)
- end
-
- on genEnterKF
- onOffScreenCursor(1)
- set func to getaProp(getaProp(gCurKeyList, #FUNCTIONS), #enter)
- if func <> #noEnter then
- do(string(func))
- end if
- setAmbientSound()
- setScreenState()
- AddtoBeenThere(gKeyRef)
- updateStage()
- end
-
- on delScreenState
- Delobjects(getaProp(gLastKeyList, #objects))
- end
-
- on setScreenState
- set PICTContainer to getaProp(gCurKeyList, #BGName)
- if stringp(PICTContainer) then
- end if
- set the castNum of sprite sPICTSPRITE to PICTContainer
- set the loc of sprite sQTSPRITE to point(-9999, -9999)
- ADDObjects(getaProp(gCurKeyList, #objects))
- end
-
- on ChangeSpecialState ObjRef, State
- set obj to getaProp(gOBJECTS, ObjRef)
- set OBJS to getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))
- if not voidp(OBJS) then
- Delobjects(OBJS)
- end if
- makeDynamic(ObjRef, #State, State)
- set OBJS to getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))
- if not voidp(OBJS) then
- ADDObjects(OBJS)
- end if
- end
-
- on ADDObjects objects
- repeat with ObjRef in objects
- set obj to getaProp(gOBJECTS, ObjRef)
- setaProp(gScreenState, getaProp(obj, #spriteNum), ObjRef)
- if not voidp(getaProp(obj, #HotRect)) and (getaProp(obj, #HotRect) <> NULLRECT) then
- set nRects to count(getaProp(obj, #HotRect))
- repeat with X = 1 to nRects
- set hotrectlist to [#rect: getAt(getaProp(obj, #HotRect), X), #RefName: getaProp(obj, #RefName)]
- setaProp(gHotRects, value(getaProp(obj, #spriteNum) & 0 & X), hotrectlist)
- end repeat
- end if
- if not voidp(getaProp(obj, #CursorPresent)) then
- ADDHITMap(ObjRef)
- end if
- DisplayOBJ(ObjRef)
- if not voidp(getaProp(obj, #Children)) then
- ADDObjects(getaProp(obj, #Children))
- end if
- if not voidp(getaProp(obj, #SpecialChild)) then
- if not voidp(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))) then
- ADDObjects(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State)))
- end if
- end if
- end repeat
- end
-
- on Delobjects objects
- repeat with ObjRef in objects
- set obj to getaProp(gOBJECTS, ObjRef)
- if not voidp(getaProp(obj, #SpecialChild)) then
- if not voidp(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))) then
- Delobjects(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State)))
- end if
- end if
- if not voidp(getaProp(obj, #Children)) then
- Delobjects(getaProp(obj, #Children))
- end if
- UNDisplayOBJ(ObjRef)
- if not voidp(getaProp(obj, #CursorPresent)) then
- DELHITMap(ObjRef)
- end if
- if not voidp(getaProp(obj, #HotRect)) and (getaProp(obj, #HotRect) <> NULLRECT) then
- set nRects to count(getaProp(obj, #HotRect))
- repeat with X = 1 to nRects
- deleteProp(gHotRects, value(getaProp(obj, #spriteNum) & 0 & X))
- end repeat
- end if
- if not voidp(getaProp(obj, #timer)) then
- repeat with theTimer in getaProp(obj, #timer)
- deleteProp(gTimerList, getaProp(theTimer, #TimeRefNum))
- end repeat
- deleteProp(obj, #timer)
- end if
- deleteProp(gScreenState, getaProp(obj, #spriteNum))
- end repeat
- end
-
- on ADDHITMap ObjRef
- set obj to getaProp(gOBJECTS, ObjRef)
- set Mapref to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #name)
- if not voidp(getaProp(gHitMaps, Mapref)) then
- set lock to getaProp(getaProp(gHitMaps, Mapref), #Lockcount) + 1
- setaProp(getaProp(gHitMaps, Mapref), #Lockcount, lock)
- AddHitIndex(ObjRef, Mapref)
- else
- set xoffset to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #xoffset)
- set yoffset to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #yoffset)
- set scale to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #scale)
- set pathName to string(gCDName & "CODE" & gfileSep & Mapref & ".BMP")
- set xMap to OffScreen(mnew, pathName, xoffset, yoffset, scale)
- setaProp(gHitMaps, Mapref, [#hitxobj: xMap, #Lockcount: 1, #INDEXLIST: [:]])
- AddHitIndex(ObjRef, Mapref)
- set gCursorPresent to #true
- end if
- end
-
- on DELHITMap ObjRef
- set obj to getaProp(gOBJECTS, ObjRef)
- set Mapref to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #name)
- if not voidp(getaProp(gHitMaps, Mapref)) then
- delHitIndex(ObjRef, Mapref)
- set lock to getaProp(getaProp(gHitMaps, Mapref), #Lockcount) - 1
- setaProp(getaProp(gHitMaps, Mapref), #Lockcount, lock)
- if getaProp(getaProp(gHitMaps, Mapref), #Lockcount) = 0 then
- set xMap to getaProp(getaProp(gHitMaps, Mapref), #hitxobj)
- xMap(mdispose)
- deleteProp(gHitMaps, Mapref)
- set gCursorPresent to #false
- end if
- end if
- end
-
- on AddHitIndex ObjRef, Mapref
- set index to getaProp(getaProp(getaProp(gOBJECTS, ObjRef), #CursorPresent), #HitIndex)
- set INDEXLIST to getaProp(getaProp(gHitMaps, Mapref), #INDEXLIST)
- set cindex to count(index)
- repeat with IND = 1 to cindex
- set action to getAt(index, IND)
- set indexNum to getPropAt(index, IND)
- addProp(INDEXLIST, indexNum, [#RefName: ObjRef, #do: action])
- end repeat
- end
-
- on delHitIndex ObjRef, Mapref
- set index to getaProp(getaProp(getaProp(gOBJECTS, ObjRef), #CursorPresent), #HitIndex)
- set INDEXLIST to getaProp(getaProp(gHitMaps, Mapref), #INDEXLIST)
- set cindex to count(index)
- repeat with IND = 1 to cindex
- set indexNum to getPropAt(index, IND)
- deleteProp(INDEXLIST, indexNum)
- end repeat
- end
-
- on DisplayOBJ ObjRef
- set obj to getaProp(gOBJECTS, ObjRef)
- if getaProp(obj, #type) = #Animator then
- OnAnimatorObj(ObjRef)
- else
- if getaProp(obj, #type) = #QTMovie then
- startTheTimer(1, string("ONQTMovieOBJ #" & ObjRef), ObjRef)
- else
- if getaProp(obj, #type) = #QDLine then
- add(getaProp(gPuppetlines, #objects), ObjRef)
- if voidp(getaProp(gPuppetlines, #timer)) then
- setaProp(gPuppetlines, #timer, startTheTimer(1, "PuppetLines"))
- end if
- else
- if getaProp(obj, #DisplayState) <> #false then
- OnSpriteObj(ObjRef)
- end if
- end if
- end if
- end if
- end
-
- on UNDisplayOBJ ObjRef
- set obj to getaProp(gOBJECTS, ObjRef)
- if getaProp(obj, #type) = #Animator then
- OFFAnimatorOBJ(ObjRef)
- else
- if getaProp(obj, #type) = #QTMovie then
- OFFQTMovieOBJ(ObjRef)
- else
- if getaProp(obj, #DisplayState) <> #false then
- OFFSpriteObj(ObjRef)
- end if
- end if
- end if
- end
-
- on OnSpriteObj ObjRef
- set obj to getaProp(gOBJECTS, ObjRef)
- if not voidp(getaProp(getaProp(obj, #cast), #LoadCast)) and (getPos(gNoPreLoadRefNames, ObjRef) = 0) then
- LoadCastofOBJ(getaProp(getaProp(obj, #cast), #LoadCast))
- end if
- if listp(getaProp(getaProp(obj, #cast), getaProp(obj, #DisplayState))) then
- set the castNum of sprite getaProp(obj, #spriteNum) to getAt(getaProp(getaProp(obj, #cast), getaProp(obj, #DisplayState)), 1)
- else
- set the castNum of sprite getaProp(obj, #spriteNum) to getaProp(getaProp(obj, #cast), getaProp(obj, #DisplayState))
- end if
- if not voidp(getaProp(obj, #SpriteProp)) then
- SetSpriteProps(getaProp(obj, #spriteNum), getaProp(obj, #SpriteProp))
- end if
- if not voidp(getaProp(obj, #loc)) then
- set the loc of sprite getaProp(obj, #spriteNum) to getaProp(obj, #loc)
- end if
- end
-
- on OFFSpriteObj ObjRef
- set obj to getaProp(gOBJECTS, ObjRef)
- if not voidp(getaProp(getaProp(obj, #cast), #LoadCast)) then
- UNLoadCastofOBJ(getaProp(getaProp(obj, #cast), #LoadCast))
- end if
- if not voidp(getaProp(obj, #SpriteProp)) then
- ResetSpriteProps(getaProp(obj, #spriteNum), getaProp(obj, #SpriteProp))
- end if
- set the castNum of sprite getaProp(obj, #spriteNum) to cNullCast
- set the loc of sprite getaProp(obj, #spriteNum) to point(-20000, -20000)
- set the stretch of sprite getaProp(obj, #spriteNum) to 0
- set the type of sprite getaProp(obj, #spriteNum) to 1
- end
-
- on SetSpriteProps sNum, propList
- set nProps to count(propList)
- repeat with X = 1 to nProps
- set Prop to getaProp(getaProp(gSpritePropTypes, getPropAt(propList, X)), #script)
- set PropVal to getAt(propList, X)
- do(string("Set" && Prop && sNum && "=" && PropVal))
- end repeat
- end
-
- on ResetSpriteProps sNum, propList
- set nProps to count(propList)
- repeat with X = 1 to nProps
- set Prop to getaProp(getaProp(gSpritePropTypes, getPropAt(propList, X)), #script)
- set PropVal to getaProp(getaProp(gSpritePropTypes, getPropAt(propList, X)), #DeFault)
- do(string("Set" && Prop && sNum && "=" && PropVal))
- end repeat
- set the stretch of sprite sNum to 0
- end
-